-- pass_dungeon
-- created by panyl
-- 直接通过1层

return {
    apply = function(source, target, skillId, round, para, extra)
        -- TODO: 暂时啥都不做

        -- 返回作用目标
        return { source, };
    end,

    check = function(skillId)
        -- 最后一层不能释放
        local dungeonId = DungeonM.getDungeonId();
        local layer = DungeonM.currentLayer();
        if DungeonAreaM.query(dungeonId, "type") == "child" and 
            DungeonAreaM.query(dungeonId, "max_floor") == layer then

            -- 不能到下一层事件
            EventMgr.fire(event.MAX_FLOOR_ALREADY);

            return false;
        end

        -- 最后一层不能释放
        local ret = FormulaM.invoke("DO_NEXT_FLOOR_CHECK");
        if true ~= ret then
            return false;
        end

        -- 副本中不能使用
        if DungeonInstanceM.isInInstance() then
            return "forbid_floor";
        end

        -- boss层不能使用
        if DungeonBossM.isBossLayer(dungeonId, layer) then
            return "forbid_floor";
        end
        
        -- 夹层迷宫
        if UnrealDungeonM.isInUnreal() then
            return "forbid_floor";
        end

        return true;
    end,

    parse = function(desc)
        local arr = string.explode(desc, ",");
        return { tonumber(arr[1]), };
    end,

    -- 解析技能描述
    parseDesc = function(source, skillId, desc, para)
        return desc;
    end,
};
